﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using HSDc.RingleFlow.Api.Kernel;

namespace HSDc.RingleFlow.Api.Service
{
    public interface ITaskService
    {
        /// <summary>
        /// 根據User ID取得該使用者所有的Task
        /// </summary>
        /// <param name="UserID">使用者代號</param>
        /// <returns>所有的Task</returns>
        List<ITask> GetTasks(string UserID);
        /// <summary>
        /// 根據User ID以及Process Instance ID取得該使用者的Task
        /// </summary>
        /// <param name="UserID">使用者代號</param>
        /// <param name="ProcessInstanceID">Process Instance ID</param>
        /// <returns>單一個Task</returns>
        ITask GetTask(string UserID, string ProcessInstanceID);
        /// <summary>
        /// 根據TaskID取得單一一個Task
        /// </summary>
        /// <param name="TaskID">Task ID</param>
        /// <returns>單一個Task</returns>
        ITask GetTask(string TaskID);
        /// <summary>
        /// 儲存並完成某一個Task，此方法會把執行後的結果直接完成，並進入下一個階段
        /// </summary>
        /// <param name="task">ITask Object</param>
        void CompleteTask(ITask task);
        /// <summary>
        /// 儲存Task，但並不完成該Task，該Task仍停留在目前階段，直到CompleteTask被呼叫為止
        /// </summary>
        /// <param name="task">ITask Object</param>
        void SaveTask(ITask task);
    }
}
